package com.axend.lib_room.manager

import com.axend.lib_room.database.SofaDataBase
import com.axend.lib_room.entity.SofaLogEntity
import kotlinx.coroutines.MainScope
import kotlinx.coroutines.launch

/**
 * 沙发日志管理
 */

object LogManager {

    private val sofaDao by lazy { SofaDataBase.getInstance().sofaDao() }


    /**
     * 保存log list
     */
    suspend fun saveLogList(sofaLogEntityList: MutableList<SofaLogEntity>) {
        sofaDao.insertAll(sofaLogEntityList)
    }


    /**
     *插入log
     */
    suspend fun saveLog(sofaLogEntity: SofaLogEntity) {
        MainScope().launch {
            sofaDao.insert(sofaLogEntity)
        }
    }


    /**
     * 根据id删除宠物档案
     */
    suspend fun deleteLogItem(id: Int) {
        MainScope().launch {
            sofaDao.deleteById(id)
        }
    }


    /**
     * 根据id查询宠物档案
     */
    suspend fun getLogItem(id: Int): SofaLogEntity? {
        return sofaDao.getById(id)
    }


    /**
     * 根据petinfoentity 删除宠物档案
     */
    suspend fun deleteLogItem(sofaLogEntity: SofaLogEntity) {
        MainScope().launch {
            sofaDao.delete(sofaLogEntity)
        }
    }


    /**
     * 根据petinfoentity更新宠物档案
     */
    suspend fun updateLogItem(sofaLogEntity: SofaLogEntity) {
        MainScope().launch {
            sofaDao.update(sofaLogEntity)
        }
    }

    /**
     * 获取所有宠物档案
     */
    suspend fun getAllLogList(): List<SofaLogEntity>? {
        return sofaDao.getAll()
    }

//    /**
//     * 根据name、masterName、species、breed进行模糊查询
//     */
//    suspend fun getLogListByName(
//        keyWords: String,
//        pageSize: Int,
//        offset: Int
//    ): List<SofaLogEntity>? {
//        return sofaDao.getByName(keyWords, pageSize, offset)
//    }
//
//    /**
//     * 根据name、masterName、species、breed进行分页模糊查询总条目
//     */
//    suspend fun getLogCount( keyWords: String): Int {
//        return sofaDao.getByNameCount(keyWords)
//    }
//
//    /**
//     * 根据name、masterName、species、breed进行模糊查询所有数据
//     */
//    suspend fun getPetInfoListByName(keyWords: String): List<SofaLogEntity>? {
//        return sofaDao.getByNameAll(keyWords)
//    }


    /**
     * 获取所有分页查询数据
     */
    suspend fun getLogListByPage(pageSize: Int, offset: Int): List<SofaLogEntity>? {
        return sofaDao.getAllByPage(pageSize, offset)
    }


    /**
     * 获取宠物档案livedata
     */
    fun getAllPetInfoLiveData() = sofaDao.getAllLiveData()


    /**
     * 清除所有宠物档案
     */
    suspend fun deleteAll(callBack: (String) -> Unit) {
        MainScope().launch {
            sofaDao.deleteAll()
            callBack.invoke("删除成功")
        }
    }
}